red green trees
不完全なコードを表現できるとか、木の一部分を差し替えられるとかのメリットがあるので、ソースコードの変更があったときに変更部分だけパースして差し替えたりできる。
Red Green Trees は結構面白くて、外部に露出する木のノード(RedNode)が内部ノード(GreenNode)を持っていて、Red は親の Red を持ち、Green は子の Green とトークンとかを持つ。Red はボトムアップに辿れて Green はトップダウンに走査できる。 最初はだからどうしたと思ったけど、たしかに便利
Red Green なのは使っていたマーカーの色で意味はないらしい。分かりづらいので、実装ではred green の名前ではなくなっていたりするが、 rust-analyzer のライブラリである rowan では何故か green だけが残っているので、経緯を知らないと名前の意味がわからない